home *** CD-ROM | disk | FTP | other *** search
/ Champak 138 / Volume 138 Aug 19 2011 - Damaged.iso / Games / shadez.swf / scripts / Local / Game / Thing / CTCollideShape.as < prev    next >
Encoding:
Text File  |  2011-08-19  |  13.9 KB  |  422 lines

  1.  
  2. {
  3.    if(true)
  4.    {
  5.       CTCollideShape = ┬º┬ºnewclass(CTCollideShape,CTCollide);
  6.    }
  7. }
  8.  
  9. package Local.Game.Thing
  10. {
  11.    import Local.Game.World.*;
  12.    import flash.display.*;
  13.    import flash.events.*;
  14.    import flash.geom.*;
  15.    
  16.    public class CTCollideShape extends CTCollide
  17.    {
  18.        
  19.       
  20.       private var _Rect:Rectangle;
  21.       
  22.       private var mLastPosition:CPosition;
  23.       
  24.       private var mLastOrientation:Number;
  25.       
  26.       private var mLastAngle:CAngle;
  27.       
  28.       private var pMid:CPosition;
  29.       
  30.       private var pPoints:Array;
  31.       
  32.       private var mPairs:Array;
  33.       
  34.       private var mPoints:Array;
  35.       
  36.       public function CTCollideShape(param1:*, param2:Array, param3:CPosition)
  37.       {
  38.          var _loc4_:CPosition = null;
  39.          var _loc5_:* = 0;
  40.          var _loc6_:int = 0;
  41.          super(param1);
  42.          mPoints = param2;
  43.          pPoints = new Array();
  44.          mPairs = new Array();
  45.          for each(_loc4_ in mPoints)
  46.          {
  47.             if(true)
  48.             {
  49.                pPoints.push(_loc4_.Clone());
  50.             }
  51.          }
  52.          ┬º┬ºpush(0);
  53.          if(true)
  54.          {
  55.             _loc5_ = ┬º┬ºpop();
  56.             _loc6_ = int(pPoints.length);
  57.             while(true)
  58.             {
  59.                ┬º┬ºpush(_loc5_);
  60.                addr61:
  61.                mPairs.push({
  62.                   "p1":pPoints[_loc5_],
  63.                   "p2":pPoints[(_loc5_ + 1) % _loc6_]
  64.                });
  65.                _loc5_++;
  66.             }
  67.             addr85:
  68.          }
  69.          while(┬º┬ºpop() < _loc6_)
  70.          {
  71.             ┬º┬ºgoto(addr61);
  72.             ┬º┬ºgoto(addr85);
  73.          }
  74.          param3 = !!param3 ? param3 : new CPosition();
  75.          if(true)
  76.          {
  77.             pPoints.push(pMid = param3.Clone());
  78.             if(true)
  79.             {
  80.                mPoints.push(param3);
  81.                if(true)
  82.                {
  83.                   mLastAngle = new CAngle();
  84.                   if(true)
  85.                   {
  86.                      mLastPosition = new CPosition();
  87.                   }
  88.                   mLastOrientation = 0;
  89.                }
  90.                _Rect = new Rectangle();
  91.             }
  92.             Update();
  93.          }
  94.       }
  95.       
  96.       override public function CollideBox(param1:Rectangle) : Boolean
  97.       {
  98.          return false;
  99.       }
  100.       
  101.       override public function CollideRadius(param1:CPosition, param2:Number) : Boolean
  102.       {
  103.          return Point.distance(param1,mMid) <= param2;
  104.       }
  105.       
  106.       override public function get mMid() : CPosition
  107.       {
  108.          return pMid.Clone();
  109.       }
  110.       
  111.       private function OrientatePoints(param1:Array, param2:Array, param3:CPosition) : void
  112.       {
  113.          var _loc4_:* = NaN;
  114.          var _loc5_:* = NaN;
  115.          var _loc6_:* = NaN;
  116.          var _loc7_:* = NaN;
  117.          var _loc8_:* = NaN;
  118.          var _loc9_:* = 0;
  119.          var _loc10_:Point = null;
  120.          ┬º┬ºpush(mAngle.mAngleRAD);
  121.          if(true)
  122.          {
  123.             _loc4_ = ┬º┬ºpop();
  124.             ┬º┬ºpush(Math.sin(_loc4_));
  125.             if(true)
  126.             {
  127.                _loc5_ = ┬º┬ºpop();
  128.                ┬º┬ºpush(Math.cos(_loc4_));
  129.                if(true)
  130.                {
  131.                   _loc6_ = ┬º┬ºpop();
  132.                   ┬º┬ºpush(_loc5_);
  133.                   if(true)
  134.                   {
  135.                      ┬º┬ºpush(┬º┬ºpop() * mOrientation);
  136.                   }
  137.                   _loc7_ = ┬º┬ºpop();
  138.                   ┬º┬ºpush(_loc6_);
  139.                }
  140.                ┬º┬ºpush(┬º┬ºpop() * mOrientation);
  141.             }
  142.             ┬º┬ºpush(┬º┬ºpop());
  143.          }
  144.          _loc8_ = ┬º┬ºpop();
  145.          ┬º┬ºpush(0);
  146.          if(true)
  147.          {
  148.             _loc9_ = ┬º┬ºpop();
  149.             ┬º┬ºpush(0);
  150.          }
  151.          for each(_loc10_ in param1)
  152.          {
  153.             param2[_loc9_++].SetXY(_loc10_.x * _loc8_ - _loc10_.y * _loc5_ + param3.x,_loc10_.x * _loc7_ + _loc10_.y * _loc6_ + param3.y);
  154.          }
  155.       }
  156.       
  157.       override public function Update() : void
  158.       {
  159.          if(true)
  160.          {
  161.             CacheShape();
  162.          }
  163.       }
  164.       
  165.       private function CacheShape() : void
  166.       {
  167.          var _loc1_:Rectangle = null;
  168.          var _loc2_:Object = null;
  169.          var _loc3_:CPosition = null;
  170.          var _loc4_:CPosition = null;
  171.          ┬º┬ºpush(mLastAngle.mAngle == mAngle.mAngle);
  172.          if(true)
  173.          {
  174.             ┬º┬ºpush(!┬º┬ºpop());
  175.             if(true)
  176.             {
  177.                if(!┬º┬ºpop())
  178.                {
  179.                   if(true)
  180.                   {
  181.                      ┬º┬ºpop();
  182.                      ┬º┬ºpush(mLastPosition);
  183.                      if(true)
  184.                      {
  185.                         ┬º┬ºpush(┬º┬ºpop().x == mPosition.x);
  186.                         if(true)
  187.                         {
  188.                            ┬º┬ºpush(!┬º┬ºpop());
  189.                            if(true)
  190.                            {
  191.                               addr48:
  192.                               if(!┬º┬ºpop())
  193.                               {
  194.                                  ┬º┬ºpop();
  195.                                  ┬º┬ºpush(mLastPosition);
  196.                                  if(true)
  197.                                  {
  198.                                     ┬º┬ºgoto(addr59);
  199.                                  }
  200.                                  ┬º┬ºgoto(addr72);
  201.                               }
  202.                            }
  203.                            ┬º┬ºgoto(addr59);
  204.                         }
  205.                         addr59:
  206.                         ┬º┬ºpush(┬º┬ºpop().y != mPosition.y);
  207.                         if(!(┬º┬ºpop().y != mPosition.y))
  208.                         {
  209.                            addr61:
  210.                            ┬º┬ºpop();
  211.                            ┬º┬ºgoto(addr66);
  212.                         }
  213.                         addr66:
  214.                         ┬º┬ºgoto(addr65);
  215.                      }
  216.                      ┬º┬ºgoto(addr76);
  217.                   }
  218.                   ┬º┬ºgoto(addr61);
  219.                }
  220.                ┬º┬ºgoto(addr48);
  221.             }
  222.             addr65:
  223.             if(mLastOrientation != mOrientation)
  224.             {
  225.                mLastAngle.mAngle = mAngle.mAngle;
  226.                addr72:
  227.                mLastPosition.x = mPosition.x;
  228.                addr76:
  229.                mLastPosition.y = mPosition.y;
  230.                mLastOrientation = mOrientation;
  231.                OrientatePoints(mPoints,pPoints,mPosition);
  232.                _Rect.x = mPairs[0].p1.x;
  233.                _Rect.y = mPairs[0].p1.y;
  234.                _Rect.width = 1;
  235.                _Rect.height = 1;
  236.                _loc1_ = new Rectangle(0,0,1,1);
  237.                for each(_loc2_ in mPairs)
  238.                {
  239.                   _loc3_ = _loc2_.p1;
  240.                   _loc4_ = _loc2_.p2;
  241.                   _loc2_.dx = _loc4_.x - _loc3_.x;
  242.                   _loc2_.dy = _loc4_.y - _loc3_.y;
  243.                   if(_loc3_.x < _Rect.left)
  244.                   {
  245.                      _Rect.left = _loc3_.x;
  246.                   }
  247.                   else if(_loc3_.x > _Rect.right)
  248.                   {
  249.                      _Rect.right = _loc3_.x;
  250.                   }
  251.                   if(_loc3_.y < _Rect.top)
  252.                   {
  253.                      _Rect.top = _loc3_.y;
  254.                   }
  255.                   else if(_loc3_.y > _Rect.bottom)
  256.                   {
  257.                      _Rect.bottom = _loc3_.y;
  258.                   }
  259.                }
  260.             }
  261.             return;
  262.          }
  263.          ┬º┬ºgoto(addr61);
  264.       }
  265.       
  266.       override public function get mRect() : Rectangle
  267.       {
  268.          return _Rect.clone();
  269.       }
  270.       
  271.       override public function CollideLine(param1:CPosition, param2:CPosition, param3:Boolean = false) : *
  272.       {
  273.          var _loc4_:Number = NaN;
  274.          var _loc5_:Number = NaN;
  275.          var _loc6_:Boolean = false;
  276.          var _loc7_:CPosition = null;
  277.          var _loc8_:CPosition = null;
  278.          var _loc9_:Number = NaN;
  279.          var _loc10_:Number = NaN;
  280.          var _loc11_:Object = null;
  281.          var _loc12_:Number = NaN;
  282.          var _loc13_:Number = NaN;
  283.          var _loc14_:Number = NaN;
  284.          var _loc15_:Number = NaN;
  285.          var _loc16_:Number = NaN;
  286.          var _loc17_:* = NaN;
  287.          var _loc18_:Number = NaN;
  288.          if(true)
  289.          {
  290.             CacheShape();
  291.             if(true)
  292.             {
  293.                _loc4_ = param2.x - param1.x;
  294.                _loc5_ = param2.y - param1.y;
  295.             }
  296.             _loc6_ = false;
  297.          }
  298.          _loc7_ = new CPosition();
  299.          _loc8_ = param2.Clone();
  300.          if(true)
  301.          {
  302.             _loc9_ = Point.distance(_loc8_,param1);
  303.          }
  304.          var _loc19_:int = 0;
  305.          var _loc20_:* = mPairs;
  306.          while(true)
  307.          {
  308.             for each(_loc11_ in _loc20_)
  309.             {
  310.                _loc12_ = _loc4_ * _loc11_.dy;
  311.                _loc13_ = _loc11_.dx * _loc5_;
  312.                ┬º┬ºpush(_loc12_);
  313.                ┬º┬ºpush(_loc13_);
  314.                if(true)
  315.                {
  316.                   _loc14_ = ┬º┬ºpop() - ┬º┬ºpop();
  317.                   if(Math.abs(_loc14_) < 0.00001)
  318.                   {
  319.                      continue;
  320.                   }
  321.                   _loc15_ = _loc11_.p1.x - param1.x;
  322.                   _loc16_ = _loc11_.p1.y - param1.y;
  323.                   ┬º┬ºpush(_loc5_);
  324.                   ┬º┬ºpush(_loc15_);
  325.                   if(true)
  326.                   {
  327.                      ┬º┬ºpush(┬º┬ºpop() * ┬º┬ºpop());
  328.                      ┬º┬ºpush(_loc4_);
  329.                      if(true)
  330.                      {
  331.                         ┬º┬ºpush(_loc16_);
  332.                         if(true)
  333.                         {
  334.                            ┬º┬ºpush(┬º┬ºpop() * ┬º┬ºpop());
  335.                            if(true)
  336.                            {
  337.                               ┬º┬ºpush(┬º┬ºpop() - ┬º┬ºpop());
  338.                               ┬º┬ºpush(_loc14_);
  339.                               if(true)
  340.                               {
  341.                                  ┬º┬ºpush(┬º┬ºpop() / ┬º┬ºpop());
  342.                                  ┬º┬ºpush(┬º┬ºpop() / ┬º┬ºpop());
  343.                               }
  344.                               _loc17_ = ┬º┬ºpop();
  345.                               ┬º┬ºpush(0);
  346.                               if(true)
  347.                               {
  348.                                  ┬º┬ºpush(┬º┬ºpop() >= ┬º┬ºpop());
  349.                                  if(true)
  350.                                  {
  351.                                     if(┬º┬ºpop())
  352.                                     {
  353.                                        if(true)
  354.                                        {
  355.                                           ┬º┬ºpop();
  356.                                           ┬º┬ºpush(_loc17_);
  357.                                           ┬º┬ºpush(1);
  358.                                           if(true)
  359.                                           {
  360.                                              ┬º┬ºpush(┬º┬ºpop() <= ┬º┬ºpop());
  361.                                              if(true)
  362.                                              {
  363.                                                 addr180:
  364.                                                 if(!┬º┬ºpop())
  365.                                                 {
  366.                                                    continue;
  367.                                                 }
  368.                                                 addr199:
  369.                                                 ┬º┬ºpush((_loc18_ = (_loc11_.dx * _loc16_ - _loc11_.dy * _loc15_) / (_loc13_ - _loc12_)) >= 0);
  370.                                                 if(true)
  371.                                                 {
  372.                                                    ┬º┬ºpush(┬º┬ºpop() && _loc18_ <= 1);
  373.                                                 }
  374.                                                 if(!┬º┬ºpop())
  375.                                                 {
  376.                                                    continue;
  377.                                                 }
  378.                                                 ┬º┬ºpush(param3);
  379.                                              }
  380.                                              if(┬º┬ºpop())
  381.                                              {
  382.                                                 break;
  383.                                              }
  384.                                              _loc7_.SetXY(_loc11_.p1.x + _loc17_ * _loc11_.dx,_loc11_.p1.y + _loc17_ * _loc11_.dy);
  385.                                              if((_loc10_ = Point.distance(_loc7_,param1)) < _loc9_)
  386.                                              {
  387.                                                 _loc8_.Copy(_loc7_);
  388.                                                 _loc9_ = _loc10_;
  389.                                                 addr251:
  390.                                                 _loc6_ = true;
  391.                                              }
  392.                                              continue;
  393.                                           }
  394.                                           ┬º┬ºgoto(addr199);
  395.                                        }
  396.                                        ┬º┬ºgoto(addr213);
  397.                                     }
  398.                                     ┬º┬ºgoto(addr180);
  399.                                  }
  400.                                  ┬º┬ºgoto(addr251);
  401.                               }
  402.                               ┬º┬ºgoto(addr207);
  403.                            }
  404.                         }
  405.                      }
  406.                   }
  407.                }
  408.                ┬º┬ºgoto(addr199);
  409.             }
  410.             if(true)
  411.             {
  412.                return param3 ? false : (_loc6_ ? _loc8_ : null);
  413.             }
  414.             ┬º┬ºgoto(addr265);
  415.          }
  416.          addr213:
  417.          true;
  418.          return ┬º┬ºpop();
  419.       }
  420.    }
  421. }
  422.